/**
 * Created by JetBrains PhpStorm.
 * User: taoqili
 * Date: 12-1-30
 * Time: 下午12:50
 * To change this template use File | Settings | File Templates.
 */

var wordImage = {};
//(function(){
var g = baidu.g,
    flashObj,
    flashContainer;

wordImage.init = function (opt, callbacks) {
    showLocalPath('localPath');
    //createCopyButton("clipboard","localPath");
    createFlashUploader(opt, callbacks);
    addUploadListener();
    addOkListener();
};

function hideFlash() {
    flashObj = null;
    flashContainer.innerHTML = '';
}
function addOkListener() {
    dialog.onok = function () {
        if (!imageUrls.length) return;
        var urlPrefix = editor.getOpt('imageUrlPrefix'),
            images = domUtils.getElementsByTagName(editor.document, 'img');
        editor.fireEvent('saveScene');
        for (var i = 0, img; (img = images[i++]); ) {
            var src = img.getAttribute('word_img');
            if (!src) continue;
            for (var j = 0, url; (url = imageUrls[j++]); ) {
                if (src.indexOf(url.original.replace(' ', '')) != -1) {
                    img.src = urlPrefix + url.url;
                    img.setAttribute('_src', urlPrefix + url.url); //同时修改"_src"属性
                    img.setAttribute('title', url.title);
                    domUtils.removeAttributes(img, ['word_img', 'style', 'width', 'height']);
                    editor.fireEvent('selectionchange');
                    break;
                }
            }
        }
        editor.fireEvent('saveScene');
        hideFlash();
    };
    dialog.oncancel = function () {
        hideFlash();
    };
}

/**
 * 绑定开始上传事件
 */
function addUploadListener() {
    g('upload').onclick = function () {
        flashObj.upload();
        this.style.display = 'none';
    };
}

function showLocalPath(id) {
    //单张编辑
    var img = editor.selection.getRange().getClosedNode();
    var images = editor.execCommand('wordimage');
    if (images.length == 1 || (img && img.tagName == 'IMG')) {
        g(id).value = images[0];
        return;
    }
    var path = images[0];
    var leftSlashIndex = path.lastIndexOf('/') || 0, //不同版本的doc和浏览器都可能影响到这个符号，故直接判断两种
        rightSlashIndex = path.lastIndexOf('\\') || 0,
        separater = leftSlashIndex > rightSlashIndex ? '/' : '\\';

    path = path.substring(0, path.lastIndexOf(separater) + 1);
    g(id).value = path;
}

function createFlashUploader(opt, callbacks) {
    //由于lang.flashI18n是静态属性，不可以直接进行修改，否则会影响到后续内容
    var i18n = utils.extend({}, lang.flashI18n);
    //处理图片资源地址的编码，补全等问题
    for (var i in i18n) {
        if (!(i in { lang: 1, uploadingTF: 1, imageTF: 1, textEncoding: 1 }) && i18n[i]) {
            i18n[i] = encodeURIComponent(editor.options.langPath + editor.options.lang + '/images/' + i18n[i]);
        }
    }
    opt = utils.extend(opt, i18n, false);
    var option = {
        createOptions: {
            id: 'flash',
            url: opt.flashUrl,
            width: opt.width,
            height: opt.height,
            errorMessage: lang.flashError,
            wmode: browser.safari ? 'transparent' : 'window',
            ver: '10.0.0',
            vars: opt,
            container: opt.container,
        },
    };

    option = extendProperty(callbacks, option);
    flashObj = new baidu.flash.imageUploader(option);
    flashContainer = $G(opt.container);
}

function extendProperty(fromObj, toObj) {
    for (var i in fromObj) {
        if (!toObj[i]) {
            toObj[i] = fromObj[i];
        }
    }
    return toObj;
}

//})();

function getPasteData(id) {
    baidu.g('msg').innerHTML = lang.copySuccess + '</br>';
    setTimeout(function () {
        baidu.g('msg').innerHTML = '';
    }, 5000);
    return baidu.g(id).value;
}

function createCopyButton(id, dataFrom) {
    baidu.swf.create(
        {
            id: 'copyFlash',
            url: 'fClipboard_ueditor.swf',
            width: '58',
            height: '25',
            errorMessage: '',
            bgColor: '#CBCBCB',
            wmode: 'transparent',
            ver: '10.0.0',
            vars: {
                tid: dataFrom,
            },
        },
        id,
    );

    var clipboard = baidu.swf.getMovie('copyFlash');
    var clipinterval = setInterval(function () {
        if (clipboard && clipboard.flashInit) {
            clearInterval(clipinterval);
            clipboard.setHandCursor(true);
            clipboard.setContentFuncName('getPasteData');
            //clipboard.setMEFuncName("mouseEventHandler");
        }
    }, 500);
}
createCopyButton('clipboard', 'localPath');
